home *** CD-ROM | disk | FTP | other *** search
/ FishMarket 1.0 / FishMarket v1.0.iso / fishies / 151-175 / disk_165 / plotview / plot / plotprint.c < prev    next >
C/C++ Source or Header  |  1992-05-06  |  4KB  |  209 lines

  1. /*
  2.      plotprint.c : Print Unix Plot files in english
  3.  
  4.      By Joel Swank April, 1988
  5.  
  6.      */
  7. #include <stdio.h>
  8. #include <ctype.h> 
  9.  
  10. /*************************************************
  11.      Parameter output routine definitions
  12. *************************************************/
  13.  
  14. #define put_xy(x,y) printf(" %ld,%ld",x,y);
  15. #define put_int(x) printf(" %ld",x);
  16. #define put_txt(x) printf(" %s\n",x);
  17.  
  18. FILE *input;
  19. short longflag;
  20.  
  21. main(argc,argv)
  22. int argc;
  23. char *argv[];
  24. {
  25.  
  26. struct IntuiMessage    *msg;
  27. int cmd, i;
  28. long x,y, r;
  29. long x1,y1,x2,y2;
  30. char textbuf[100], *p;
  31. longflag = 1;
  32.  
  33. /*************************************************
  34.      Interrogate command line 
  35. *************************************************/
  36.  
  37.  
  38. if (argc == 1)
  39.     {
  40.     fprintf(stderr,"Usage:plotprint [-l] plotfile\n");
  41.     exit(2);
  42.     }
  43.  
  44. while (*argv[1] == '-') 
  45.     {
  46.     p = (char *) &*argv[1];
  47.     p++;        /* point to the option chars */
  48.     switch (*p)
  49.         {
  50.         case 'l':        /* x size value */
  51.             longflag =0;
  52.             break;
  53.  
  54.         default:
  55.             fprintf(stderr,"plotprint:Invalid option %s\n",argv[1]);
  56.             exit(27);
  57.         }
  58.     argc--;
  59.     argv++;
  60.     }
  61.  
  62. if (argc == 1 || argc >2)
  63.     {
  64.     fprintf(stderr,"plotprint:Exactly One filename required\n");
  65.     exit(2);
  66.     }
  67.  
  68.  
  69. if ((input = fopen(argv[1],"r")) == NULL)
  70.     {
  71.     fprintf(stderr,"plotprint: %s: open failed\n",argv[1]);
  72.     exit(3);
  73.     }
  74.  
  75.  
  76.  
  77.  
  78. /*************************************************
  79.      MAIN printing loop
  80. *************************************************/
  81.  
  82. while ((cmd = getc(input)) != EOF)
  83.     {
  84.     switch (cmd)
  85.         {
  86.         case 'm':    /* move x,y */
  87.             (longflag) ? putchar('m') : fputs("move",stdout);
  88.             get_xy(&x,&y);
  89.             put_xy(x,y);
  90.             putchar('\n');
  91.             break;
  92.         case 'n':    /* draw x,y */
  93.             (longflag) ? putchar('n') : fputs("cont",stdout);
  94.             get_xy(&x,&y);
  95.             put_xy(x,y);
  96.             putchar('\n');
  97.             break;
  98.         case 'p':    /* point x,y */
  99.             (longflag) ? putchar('p') : fputs("point",stdout);
  100.             get_xy(&x,&y);
  101.             put_xy(x,y);
  102.             putchar('\n');
  103.             break;
  104.         case 'l':    /* line xs,ys, xe,ye */
  105.             (longflag) ? putchar('l') : fputs("line",stdout);
  106.             get_xy(&x,&y);
  107.             put_xy(x,y);
  108.             putchar(',');
  109.             get_xy(&x,&y);
  110.             put_xy(x,y);
  111.             putchar('\n');
  112.             break;
  113.         case 'a':    /* arc xc,yc, xs,ys, xe,ye */
  114.             (longflag) ? putchar('a') : fputs("arc",stdout);
  115.             get_xy(&x,&y);    /* get center */
  116.             put_xy(x,y);
  117.             putchar(',');
  118.             get_xy(&x,&y);  /* get start point */
  119.             put_xy(x,y);
  120.             putchar(',');
  121.             get_xy(&x,&y);  /* get end point */
  122.             put_xy(x,y);
  123.             putchar('\n');
  124.             break;
  125.         case 't':    /* Text string\n   */
  126.             (longflag) ? putchar('t') : fputs("label",stdout);
  127.             get_txt(textbuf);
  128.             put_txt(textbuf);
  129.             break;
  130.         case 'c':    /* circle xc,yc, r */
  131.             (longflag) ? putchar('c') : fputs("circle",stdout);
  132.             get_xy(&x,&y);
  133.             put_xy(x,y);
  134.             putchar(',');
  135.             get_int(&r);
  136.             put_int(r);
  137.             putchar('\n');
  138.             break;
  139.         case 'f':    /* linemode string\n   */
  140.             (longflag) ? putchar('f') : fputs("linemod",stdout);
  141.             get_txt(textbuf);
  142.             put_txt(textbuf);
  143.             break;
  144.         case 's':    /* space xlo,ylo, xhi,yhi */
  145.             (longflag) ? putchar('s') : fputs("space",stdout);
  146.             get_xy(&x,&y);
  147.             put_xy(x,y);
  148.             putchar(',');
  149.             get_xy(&x,&y);
  150.             put_xy(x,y);
  151.             putchar('\n');
  152.             break;
  153.         case 'e':    /* erase */
  154.             (longflag) ? putchar('e') : fputs("erase",stdout);
  155.             putchar('\n');
  156.             break;
  157.         default:
  158.             printf("Invalid Command character:%c\n",cmd);
  159.         }
  160.     }
  161. }
  162.  
  163.  
  164. /*************************************************
  165.      Parameter input routines
  166. *************************************************/
  167.  
  168.  
  169. /*
  170.  * input a pair of 16 bit ints, scale and clip to screen,
  171.  * and return them as longs
  172.  *
  173.  */
  174.  
  175. get_xy(x,y)
  176. register long *x, *y;
  177. {
  178.     get_int(x);
  179.     get_int(y);
  180. }
  181.  
  182. /*
  183.  * input a 16 bit int and return as a long
  184.  */
  185.  
  186. get_int(num)
  187. long *num;
  188. {
  189.     register short hi, lo;
  190.     lo = getc(input);
  191.     hi = (getc(input)) << 8;
  192.     *num = (long) lo + hi;
  193. }
  194.  
  195. /*
  196.  * input a text string delinited by newline,
  197.  * return to buffer delimited by a null.
  198.  */
  199.  
  200. get_txt(str)
  201. char *str;
  202. {
  203.     register int cmd;
  204.     while ((cmd = getc(input)) != '\n')
  205.         *str++ = cmd;
  206.     *str = '\0';
  207. }
  208.  
  209.